//
//  HXLocation.m
//  爱鲜蜂
//
//  Created by 洪东恒 on 16/5/8.
//  Copyright © 2016年 建国. All rights reserved.
//

#import "HXLocation.h"
#import <CoreLocation/CoreLocation.h>


@interface HXLocation()<CLLocationManagerDelegate>

@property (nonatomic,strong) CLLocationManager *locationM;

@property (nonatomic,strong) CLGeocoder *geoc;
//地址
@property (nonatomic,strong) NSString *address;
//当前版本  以后要抽取公共类
@property (nonatomic,assign) CGFloat version;

@end

@implementation HXLocation

//设置单例
single_implementation(HXLocation)


- (void)viewDidLoad {
    [super viewDidLoad];

    _version = [[UIDevice currentDevice].systemVersion doubleValue];

    [self initializeLocationService];
}

//定位管理器懒加载
-(CLLocationManager *)locationM{
    if (_locationM == nil) {
        
        // 初始化定位管理器
       CLLocationManager *locationManager = [[CLLocationManager alloc] init];
        // 设置代理
        locationManager.delegate = self;
        // 设置定位精确度到米
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        // 设置过滤器为无
        locationManager.distanceFilter = kCLDistanceFilterNone;
        //设置代理
        locationManager.delegate = self;
        if(_version > 8.0f){
            // 请求定位服务
            // 取得定位权限,有两个方法,取决于你的定位使用情况
            // 一个是requestAlwaysAuthorization,一个是requestWhenInUseAuthorization
            
            // iOS8对定位进行了一些修改，其中包括定位授权的方法,CLLocationManager增加了下面的两个方法
            // 在Info.plist文件中添加如下配置：
            // NSLocationAlwaysUsageDescription Always
            // NSLocationWhenInUseUsageDescription InUse
            [locationManager requestAlwaysAuthorization];//这句话ios8以上版本使用。
        }

        _locationM = locationManager;
    }
    return _locationM;
}


//初始化定位管理器
#pragma mark 初始化定位管理器
- (void)initializeLocationService {
    
    BOOL isEnable = [CLLocationManager locationServicesEnabled];

    if(isEnable) {
        
        [_locationM startUpdatingLocation];
       
    }
    else{
        NSLog(@"当前设备定位功能未开启!,建议您到手机系统的[设置]->[隐私]->[定位服务]中打开定位服务");
        return;
    }
    
}

#pragma mark - 实现CLLocationManagerDelegate的代理方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    // 取出第一个位置
    CLLocation *location = [locations lastObject];
    // 位置坐标
//    CLLocationCoordinate2D coordinate = location.coordinate;
    //    NSLog(@"经度：%f,纬度：%f,海拔：%f,航向：%f,行走速度：%f",coordinate.longitude,coordinate.latitude,location.altitude,location.course,location.speed);
    // 反地理编码
    CLGeocoder *_geocoder;
    _geocoder = [[CLGeocoder alloc]init];
    [_geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
        CLPlacemark *placemark = [placemarks firstObject];
        //NSLog(@"详细信息:%@",placemark.addressDictionary);
        
        // 1.CountryCode CN
        // 2.Country 中国
        // 3.State 云南省
        // 4.City 昆明市
        // 5.SubLocality 五华区
        // 6.Street 学府路183号
        // 7.Thoroughfare 学府路
        // 8.SubThoroughfare 183号
        // 9.Name 中国云南省昆明市五华区莲华街道学府路183号
        NSDictionary *addressDictionary = placemark.addressDictionary;

        self.address = [addressDictionary objectForKey:@"Name"];
        
        //中国广东省广州市天河区棠下街道荷光路7号
        
    }];
    
    
    // 如果不需要实时定位,使用完关闭定位服务
    [manager stopUpdatingLocation];
}


// 定位失败,回调此方法
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
//    NSLog(@"error :%@",[error localizedDescription]);
    
    if ([error code]==kCLErrorDenied) {
        NSLog(@"访问被拒绝");
    }
    if ([error code]==kCLErrorLocationUnknown) {
        NSLog(@"无法获取位置信息");
    }
}


@end
